#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Net4Me 使用示例脚本
展示如何配置和使用Net4Me解决方案
"""

import json
import os


def create_example_config():
    """创建示例配置文件"""
    config = {
        "remote_server": {
            "host": "123.123.123.2",        # B机IP地址
            "port": 22,                     # B机SSH端口
            "username": "user",             # B机用户名
            "password": "your_password",    # B机密码（生产环境建议使用密钥）
            "private_key_path": "",         # 私钥路径（可选）
            "remote_port": 2222             # 在B机上开放的端口，用于访问A机
        },
        "local_machine": {
            "host": "127.0.0.1",            # A机本地SSH服务地址
            "port": 22,                     # A机本地SSH端口
            "username": "local_user",       # A机用户名
            "password": "local_password",   # A机密码（生产环境建议使用密钥）
            "private_key_path": ""          # 私钥路径（可选）
        },
        "tunnel": {
            "reconnect_interval": 30,       # 重连间隔（秒）
            "keepalive_interval": 60,       # 心跳间隔（秒）
            "log_level": "INFO"             # 日志级别
        }
    }
    
    # 保存配置文件
    with open('config_example.json', 'w', encoding='utf-8') as f:
        json.dump(config, f, indent=4, ensure_ascii=False)
    
    print("示例配置文件已创建: config_example.json")
    print("请根据您的实际环境修改配置参数")


def print_setup_instructions():
    """打印设置说明"""
    instructions = """
Net4Me 设置说明
===============

1. 在B机上配置SSH服务：
   a. 确保SSH服务已启动并监听22端口
   b. 编辑 /etc/ssh/sshd_config 文件，添加或修改以下配置：
      GatewayPorts yes
      AllowTcpForwarding yes
   c. 重启SSH服务：
      sudo systemctl restart sshd

2. 在A机上配置Net4Me：
   a. 安装依赖：
      pip install paramiko
   b. 修改 config.json 配置文件，填入正确的连接信息
   c. 运行Net4Me客户端：
      python main.py --mode client

3. 从B机连接A机：
   ssh -p 2222 local_user@123.123.123.2

注意事项：
- 请确保防火墙允许相应端口的通信
- 建议使用SSH密钥认证提高安全性
- 可以通过查看 net4me.log 日志文件排查问题
"""
    print(instructions)


def main():
    """主函数"""
    print("Net4Me 使用示例")
    print("================")
    
    # 创建示例配置
    create_example_config()
    
    # 打印设置说明
    print_setup_instructions()
    
    print("设置完成！请根据您的实际环境修改配置文件并运行程序。")


if __name__ == "__main__":
    main()